package juejin;

public class ThreadPrint {
    public static volatile int var = 1;

    public static void main(String[] args) {
        // 线程 A 的逻辑
        new Thread(new Runnable() {
            public void run() {
                while (true) {
                    // 判断打印条件
                    if (var == 1) {
                        System.out.println("A");
                        // 修改 var = 2， 允许线程 B 打印
                        var = 2;
                    }
                }
            }
        }, "A").start();

          // 线程 B 的逻辑
        new Thread(new Runnable() {
            public void run() {
                while (true) {
                    if (var == 2) {
                        System.out.println("B");
                        // 修改 var = 3， 允许线程 C 打印
                        var = 3;
                    }
                }
            }
        }, "B").start();

        // 线程 C 的逻辑
        new Thread(new Runnable() {
            public void run() {
                while (true) {
                    if (var == 3) {
                        System.out.println("C");
                        // 修改 var = 1， 允许线程 A 打印
                        var = 1;
                    }
                }
            }
        }, "C").start();

        try {
            Thread.sleep(10000000000L);
        } catch (Exception e) {

        }
    }
}
